// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.

#ifndef _KEY_H_
#define _KEY_H_

/// <summary>
/// Defines the keys available on a keyboard.
/// </summary>
enum AvnKey
{
    /// <summary>
    /// No key pressed.
    /// </summary>
    AvnKeyNone = 0,
    
    /// <summary>
    /// The Cancel key.
    /// </summary>
    AvnKeyCancel = 1,
    
    /// <summary>
    /// The Back key.
    /// </summary>
    AvnKeyBack = 2,
    
    /// <summary>
    /// The Tab key.
    /// </summary>
    AvnKeyTab = 3,
    
    /// <summary>
    /// The Linefeed key.
    /// </summary>
    AvnKeyLineFeed = 4,
    
    /// <summary>
    /// The Clear key.
    /// </summary>
    AvnKeyClear = 5,
    
    /// <summary>
    /// The Return key.
    /// </summary>
    AvnKeyReturn = 6,
    
    /// <summary>
    /// The Enter key.
    /// </summary>
    AvnKeyEnter = 6,
    
    /// <summary>
    /// The Pause key.
    /// </summary>
    AvnKeyPause = 7,
    
    /// <summary>
    /// The Caps Lock key.
    /// </summary>
    AvnKeyCapsLock = 8,
    
    /// <summary>
    /// The Caps Lock key.
    /// </summary>
    AvnKeyCapital = 8,
    
    /// <summary>
    /// The IME Hangul mode key.
    /// </summary>
    AvnKeyHangulMode = 9,
    
    /// <summary>
    /// The IME Kana mode key.
    /// </summary>
    AvnKeyKanaMode = 9,
    
    /// <summary>
    /// The IME Junja mode key.
    /// </summary>
    AvnKeyJunjaMode = 10,
    
    /// <summary>
    /// The IME Final mode key.
    /// </summary>
    AvnKeyFinalMode = 11,
    
    /// <summary>
    /// The IME Kanji mode key.
    /// </summary>
    AvnKeyKanjiMode = 12,
    
    /// <summary>
    /// The IME Hanja mode key.
    /// </summary>
    HanjaMode = 12,
    
    /// <summary>
    /// The Escape key.
    /// </summary>
    Escape = 13,
    
    /// <summary>
    /// The IME Convert key.
    /// </summary>
    ImeConvert = 14,
    
    /// <summary>
    /// The IME NonConvert key.
    /// </summary>
    ImeNonConvert = 15,
    
    /// <summary>
    /// The IME Accept key.
    /// </summary>
    ImeAccept = 16,
    
    /// <summary>
    /// The IME Mode change key.
    /// </summary>
    ImeModeChange = 17,
    
    /// <summary>
    /// The space bar.
    /// </summary>
    Space = 18,
    
    /// <summary>
    /// The Page Up key.
    /// </summary>
    PageUp = 19,
    
    /// <summary>
    /// The Page Up key.
    /// </summary>
    Prior = 19,
    
    /// <summary>
    /// The Page Down key.
    /// </summary>
    PageDown = 20,
    
    /// <summary>
    /// The Page Down key.
    /// </summary>
    Next = 20,
    
    /// <summary>
    /// The End key.
    /// </summary>
    End = 21,
    
    /// <summary>
    /// The Home key.
    /// </summary>
    Home = 22,
    
    /// <summary>
    /// The Left arrow key.
    /// </summary>
    Left = 23,
    
    /// <summary>
    /// The Up arrow key.
    /// </summary>
    Up = 24,
    
    /// <summary>
    /// The Right arrow key.
    /// </summary>
    Right = 25,
    
    /// <summary>
    /// The Down arrow key.
    /// </summary>
    Down = 26,
    
    /// <summary>
    /// The Select key.
    /// </summary>
    Select = 27,
    
    /// <summary>
    /// The Print key.
    /// </summary>
    Print = 28,
    
    /// <summary>
    /// The Execute key.
    /// </summary>
    Execute = 29,
    
    /// <summary>
    /// The Print Screen key.
    /// </summary>
    Snapshot = 30,
    
    /// <summary>
    /// The Print Screen key.
    /// </summary>
    PrintScreen = 30,
    
    /// <summary>
    /// The Insert key.
    /// </summary>
    Insert = 31,
    
    /// <summary>
    /// The Delete key.
    /// </summary>
    Delete = 32,
    
    /// <summary>
    /// The Help key.
    /// </summary>
    Help = 33,
    
    /// <summary>
    /// The 0 key.
    /// </summary>
    D0 = 34,
    
    /// <summary>
    /// The 1 key.
    /// </summary>
    D1 = 35,
    
    /// <summary>
    /// The 2 key.
    /// </summary>
    D2 = 36,
    
    /// <summary>
    /// The 3 key.
    /// </summary>
    D3 = 37,
    
    /// <summary>
    /// The 4 key.
    /// </summary>
    D4 = 38,
    
    /// <summary>
    /// The 5 key.
    /// </summary>
    D5 = 39,
    
    /// <summary>
    /// The 6 key.
    /// </summary>
    D6 = 40,
    
    /// <summary>
    /// The 7 key.
    /// </summary>
    D7 = 41,
    
    /// <summary>
    /// The 8 key.
    /// </summary>
    D8 = 42,
    
    /// <summary>
    /// The 9 key.
    /// </summary>
    D9 = 43,
    
    /// <summary>
    /// The A key.
    /// </summary>
    A = 44,
    
    /// <summary>
    /// The B key.
    /// </summary>
    B = 45,
    
    /// <summary>
    /// The C key.
    /// </summary>
    C = 46,
    
    /// <summary>
    /// The D key.
    /// </summary>
    D = 47,
    
    /// <summary>
    /// The E key.
    /// </summary>
    E = 48,
    
    /// <summary>
    /// The F key.
    /// </summary>
    F = 49,
    
    /// <summary>
    /// The G key.
    /// </summary>
    G = 50,
    
    /// <summary>
    /// The H key.
    /// </summary>
    H = 51,
    
    /// <summary>
    /// The I key.
    /// </summary>
    I = 52,
    
    /// <summary>
    /// The J key.
    /// </summary>
    J = 53,
    
    /// <summary>
    /// The K key.
    /// </summary>
    AvnKeyK = 54,
    
    /// <summary>
    /// The L key.
    /// </summary>
    L = 55,
    
    /// <summary>
    /// The M key.
    /// </summary>
    M = 56,
    
    /// <summary>
    /// The N key.
    /// </summary>
    N = 57,
    
    /// <summary>
    /// The O key.
    /// </summary>
    O = 58,
    
    /// <summary>
    /// The P key.
    /// </summary>
    P = 59,
    
    /// <summary>
    /// The Q key.
    /// </summary>
    Q = 60,
    
    /// <summary>
    /// The R key.
    /// </summary>
    R = 61,
    
    /// <summary>
    /// The S key.
    /// </summary>
    S = 62,
    
    /// <summary>
    /// The T key.
    /// </summary>
    T = 63,
    
    /// <summary>
    /// The U key.
    /// </summary>
    U = 64,
    
    /// <summary>
    /// The V key.
    /// </summary>
    V = 65,
    
    /// <summary>
    /// The W key.
    /// </summary>
    W = 66,
    
    /// <summary>
    /// The X key.
    /// </summary>
    X = 67,
    
    /// <summary>
    /// The Y key.
    /// </summary>
    Y = 68,
    
    /// <summary>
    /// The Z key.
    /// </summary>
    Z = 69,
    
    /// <summary>
    /// The left Windows key.
    /// </summary>
    LWin = 70,
    
    /// <summary>
    /// The right Windows key.
    /// </summary>
    RWin = 71,
    
    /// <summary>
    /// The Application key.
    /// </summary>
    Apps = 72,
    
    /// <summary>
    /// The Sleep key.
    /// </summary>
    Sleep = 73,
    
    /// <summary>
    /// The 0 key on the numeric keypad.
    /// </summary>
    NumPad0 = 74,
    
    /// <summary>
    /// The 1 key on the numeric keypad.
    /// </summary>
    NumPad1 = 75,
    
    /// <summary>
    /// The 2 key on the numeric keypad.
    /// </summary>
    NumPad2 = 76,
    
    /// <summary>
    /// The 3 key on the numeric keypad.
    /// </summary>
    NumPad3 = 77,
    
    /// <summary>
    /// The 4 key on the numeric keypad.
    /// </summary>
    NumPad4 = 78,
    
    /// <summary>
    /// The 5 key on the numeric keypad.
    /// </summary>
    NumPad5 = 79,
    
    /// <summary>
    /// The 6 key on the numeric keypad.
    /// </summary>
    NumPad6 = 80,
    
    /// <summary>
    /// The 7 key on the numeric keypad.
    /// </summary>
    NumPad7 = 81,
    
    /// <summary>
    /// The 8 key on the numeric keypad.
    /// </summary>
    NumPad8 = 82,
    
    /// <summary>
    /// The 9 key on the numeric keypad.
    /// </summary>
    NumPad9 = 83,
    
    /// <summary>
    /// The Multiply key.
    /// </summary>
    Multiply = 84,
    
    /// <summary>
    /// The Add key.
    /// </summary>
    Add = 85,
    
    /// <summary>
    /// The Separator key.
    /// </summary>
    Separator = 86,
    
    /// <summary>
    /// The Subtract key.
    /// </summary>
    Subtract = 87,
    
    /// <summary>
    /// The Decimal key.
    /// </summary>
    Decimal = 88,
    
    /// <summary>
    /// The Divide key.
    /// </summary>
    Divide = 89,
    
    /// <summary>
    /// The F1 key.
    /// </summary>
    F1 = 90,
    
    /// <summary>
    /// The F2 key.
    /// </summary>
    F2 = 91,
    
    /// <summary>
    /// The F3 key.
    /// </summary>
    F3 = 92,
    
    /// <summary>
    /// The F4 key.
    /// </summary>
    F4 = 93,
    
    /// <summary>
    /// The F5 key.
    /// </summary>
    F5 = 94,
    
    /// <summary>
    /// The F6 key.
    /// </summary>
    F6 = 95,
    
    /// <summary>
    /// The F7 key.
    /// </summary>
    F7 = 96,
    
    /// <summary>
    /// The F8 key.
    /// </summary>
    F8 = 97,
    
    /// <summary>
    /// The F9 key.
    /// </summary>
    F9 = 98,
    
    /// <summary>
    /// The F10 key.
    /// </summary>
    F10 = 99,
    
    /// <summary>
    /// The F11 key.
    /// </summary>
    F11 = 100,
    
    /// <summary>
    /// The F12 key.
    /// </summary>
    F12 = 101,
    
    /// <summary>
    /// The F13 key.
    /// </summary>
    F13 = 102,
    
    /// <summary>
    /// The F14 key.
    /// </summary>
    F14 = 103,
    
    /// <summary>
    /// The F15 key.
    /// </summary>
    F15 = 104,
    
    /// <summary>
    /// The F16 key.
    /// </summary>
    F16 = 105,
    
    /// <summary>
    /// The F17 key.
    /// </summary>
    F17 = 106,
    
    /// <summary>
    /// The F18 key.
    /// </summary>
    F18 = 107,
    
    /// <summary>
    /// The F19 key.
    /// </summary>
    F19 = 108,
    
    /// <summary>
    /// The F20 key.
    /// </summary>
    F20 = 109,
    
    /// <summary>
    /// The F21 key.
    /// </summary>
    F21 = 110,
    
    /// <summary>
    /// The F22 key.
    /// </summary>
    F22 = 111,
    
    /// <summary>
    /// The F23 key.
    /// </summary>
    F23 = 112,
    
    /// <summary>
    /// The F24 key.
    /// </summary>
    F24 = 113,
    
    /// <summary>
    /// The Numlock key.
    /// </summary>
    NumLock = 114,
    
    /// <summary>
    /// The Scroll key.
    /// </summary>
    Scroll = 115,
    
    /// <summary>
    /// The left Shift key.
    /// </summary>
    LeftShift = 116,
    
    /// <summary>
    /// The right Shift key.
    /// </summary>
    RightShift = 117,
    
    /// <summary>
    /// The left Ctrl key.
    /// </summary>
    LeftCtrl = 118,
    
    /// <summary>
    /// The right Ctrl key.
    /// </summary>
    RightCtrl = 119,
    
    /// <summary>
    /// The left Alt key.
    /// </summary>
    LeftAlt = 120,
    
    /// <summary>
    /// The right Alt key.
    /// </summary>
    RightAlt = 121,
    
    /// <summary>
    /// The browser Back key.
    /// </summary>
    BrowserBack = 122,
    
    /// <summary>
    /// The browser Forward key.
    /// </summary>
    BrowserForward = 123,
    
    /// <summary>
    /// The browser Refresh key.
    /// </summary>
    BrowserRefresh = 124,
    
    /// <summary>
    /// The browser Stop key.
    /// </summary>
    BrowserStop = 125,
    
    /// <summary>
    /// The browser Search key.
    /// </summary>
    BrowserSearch = 126,
    
    /// <summary>
    /// The browser Favorites key.
    /// </summary>
    BrowserFavorites = 127,
    
    /// <summary>
    /// The browser Home key.
    /// </summary>
    BrowserHome = 128,
    
    /// <summary>
    /// The Volume Mute key.
    /// </summary>
    VolumeMute = 129,
    
    /// <summary>
    /// The Volume Down key.
    /// </summary>
    VolumeDown = 130,
    
    /// <summary>
    /// The Volume Up key.
    /// </summary>
    VolumeUp = 131,
    
    /// <summary>
    /// The media Next Track key.
    /// </summary>
    MediaNextTrack = 132,
    
    /// <summary>
    /// The media Previous Track key.
    /// </summary>
    MediaPreviousTrack = 133,
    
    /// <summary>
    /// The media Stop key.
    /// </summary>
    MediaStop = 134,
    
    /// <summary>
    /// The media Play/Pause key.
    /// </summary>
    MediaPlayPause = 135,
    
    /// <summary>
    /// The Launch Mail key.
    /// </summary>
    LaunchMail = 136,
    
    /// <summary>
    /// The Select Media key.
    /// </summary>
    SelectMedia = 137,
    
    /// <summary>
    /// The Launch Application 1 key.
    /// </summary>
    LaunchApplication1 = 138,
    
    /// <summary>
    /// The Launch Application 2 key.
    /// </summary>
    LaunchApplication2 = 139,
    
    /// <summary>
    /// The OEM Semicolon key.
    /// </summary>
    OemSemicolon = 140,
    
    /// <summary>
    /// The OEM 1 key.
    /// </summary>
    Oem1 = 140,
    
    /// <summary>
    /// The OEM Plus key.
    /// </summary>
    OemPlus = 141,
    
    /// <summary>
    /// The OEM Comma key.
    /// </summary>
    OemComma = 142,
    
    /// <summary>
    /// The OEM Minus key.
    /// </summary>
    OemMinus = 143,
    
    /// <summary>
    /// The OEM Period key.
    /// </summary>
    OemPeriod = 144,
    
    /// <summary>
    /// The OEM Question Mark key.
    /// </summary>
    OemQuestion = 145,
    
    /// <summary>
    /// The OEM 2 key.
    /// </summary>
    Oem2 = 145,
    
    /// <summary>
    /// The OEM Tilde key.
    /// </summary>
    OemTilde = 146,
    
    /// <summary>
    /// The OEM 3 key.
    /// </summary>
    Oem3 = 146,
    
    /// <summary>
    /// The ABNT_C1 (Brazilian) key.
    /// </summary>
    AbntC1 = 147,
    
    /// <summary>
    /// The ABNT_C2 (Brazilian) key.
    /// </summary>
    AbntC2 = 148,
    
    /// <summary>
    /// The OEM Open Brackets key.
    /// </summary>
    OemOpenBrackets = 149,
    
    /// <summary>
    /// The OEM 4 key.
    /// </summary>
    Oem4 = 149,
    
    /// <summary>
    /// The OEM Pipe key.
    /// </summary>
    OemPipe = 150,
    
    /// <summary>
    /// The OEM 5 key.
    /// </summary>
    Oem5 = 150,
    
    /// <summary>
    /// The OEM Close Brackets key.
    /// </summary>
    OemCloseBrackets = 151,
    
    /// <summary>
    /// The OEM 6 key.
    /// </summary>
    Oem6 = 151,
    
    /// <summary>
    /// The OEM Quotes key.
    /// </summary>
    OemQuotes = 152,
    
    /// <summary>
    /// The OEM 7 key.
    /// </summary>
    Oem7 = 152,
    
    /// <summary>
    /// The OEM 8 key.
    /// </summary>
    Oem8 = 153,
    
    /// <summary>
    /// The OEM Backslash key.
    /// </summary>
    OemBackslash = 154,
    
    /// <summary>
    /// The OEM 3 key.
    /// </summary>
    Oem102 = 154,
    
    /// <summary>
    /// A special key masking the real key being processed by an IME.
    /// </summary>
    ImeProcessed = 155,
    
    /// <summary>
    /// A special key masking the real key being processed as a system key.
    /// </summary>
    System = 156,
    
    /// <summary>
    /// The OEM ATTN key.
    /// </summary>
    OemAttn = 157,
    
    /// <summary>
    /// The DBE_ALPHANUMERIC key.
    /// </summary>
    DbeAlphanumeric = 157,
    
    /// <summary>
    /// The OEM Finish key.
    /// </summary>
    OemFinish = 158,
    
    /// <summary>
    /// The DBE_KATAKANA key.
    /// </summary>
    DbeKatakana = 158,
    
    /// <summary>
    /// The DBE_HIRAGANA key.
    /// </summary>
    DbeHiragana = 159,
    
    /// <summary>
    /// The OEM Copy key.
    /// </summary>
    OemCopy = 159,
    
    /// <summary>
    /// The DBE_SBCSCHAR key.
    /// </summary>
    DbeSbcsChar = 160,
    
    /// <summary>
    /// The OEM Auto key.
    /// </summary>
    OemAuto = 160,
    
    /// <summary>
    /// The DBE_DBCSCHAR key.
    /// </summary>
    DbeDbcsChar = 161,
    
    /// <summary>
    /// The OEM ENLW key.
    /// </summary>
    OemEnlw = 161,
    
    /// <summary>
    /// The OEM BackTab key.
    /// </summary>
    OemBackTab = 162,
    
    /// <summary>
    /// The DBE_ROMAN key.
    /// </summary>
    DbeRoman = 162,
    
    /// <summary>
    /// The DBE_NOROMAN key.
    /// </summary>
    DbeNoRoman = 163,
    
    /// <summary>
    /// The ATTN key.
    /// </summary>
    Attn = 163,
    
    /// <summary>
    /// The CRSEL key.
    /// </summary>
    CrSel = 164,
    
    /// <summary>
    /// The DBE_ENTERWORDREGISTERMODE key.
    /// </summary>
    DbeEnterWordRegisterMode = 164,
    
    /// <summary>
    /// The EXSEL key.
    /// </summary>
    ExSel = 165,
    
    /// <summary>
    /// The DBE_ENTERIMECONFIGMODE key.
    /// </summary>
    DbeEnterImeConfigureMode = 165,
    
    /// <summary>
    /// The ERASE EOF Key.
    /// </summary>
    EraseEof = 166,
    
    /// <summary>
    /// The DBE_FLUSHSTRING key.
    /// </summary>
    DbeFlushString = 166,
    
    /// <summary>
    /// The Play key.
    /// </summary>
    Play = 167,
    
    /// <summary>
    /// The DBE_CODEINPUT key.
    /// </summary>
    DbeCodeInput = 167,
    
    /// <summary>
    /// The DBE_NOCODEINPUT key.
    /// </summary>
    DbeNoCodeInput = 168,
    
    /// <summary>
    /// The Zoom key.
    /// </summary>
    Zoom = 168,
    
    /// <summary>
    /// Reserved for future use.
    /// </summary>
    NoName = 169,
    
    /// <summary>
    /// The DBE_DETERMINESTRING key.
    /// </summary>
    DbeDetermineString = 169,
    
    /// <summary>
    /// The DBE_ENTERDLGCONVERSIONMODE key.
    /// </summary>
    DbeEnterDialogConversionMode = 170,
    
    /// <summary>
    /// The PA1 key.
    /// </summary>
    Pa1 = 170,
    
    /// <summary>
    /// The OEM Clear key.
    /// </summary>
    OemClear = 171,
    
    /// <summary>
    /// The key is used with another key to create a single combined character.
    /// </summary>
    DeadCharProcessed = 172,
};

#endif
